#include<stdio.h>
#define LEN 30

void big_copy(short src[],short dest[]){//大数拷贝
    for(int i=0;i<LEN;i++){
        dest[i]=src[i];
    }
}

void big_add(short a[],short b[],short ans[]){//大数加法
    int temp;
    ans[0]=0;
    for(int i=0;i<LEN;i++){
        temp=a[i]+b[i]+ans[i];
        if (temp>9){
            ans[i]=temp-10;
            if (i<29) ans[i+1]=1;
        }
        else{
            ans[i]=temp;
            if (i<29) ans[i+1]=0;
        }
    }
}

void big_m10(short a[]){//大数乘10
    for(int i=LEN-1;i>0;i--){
        a[i]=a[i-1];
    }
    a[0]=0;
}

void big_sub(short a[],short b[],short ans[]){//大数减法
    int temp;
    ans[0]=0;
    for(int i=0;i<LEN;i++){
        temp=a[i]-b[i]+ans[i];
        if (temp<0){
            ans[i]=temp+10;
            if (i<29) ans[i+1]=-1;
        }
        else{
            ans[i]=temp;
            if (i<29) ans[i+1]=0;
        }
    }
}

double big_div(short a_orig[],short b_orig[],short ans[],int digits){//大数除法
    short a[LEN],b[LEN];
    int temp=0;
    short c[LEN]={0};
    big_copy(a_orig,a);
    big_copy(b_orig,b);
    for(int i=0;i<digits;i++){
        big_m10(a);
        do{
            big_sub(a,b,c);
            if (c[29]==9) break;
            else{
                big_copy(c,a);
                temp+=1;
            }
        }while(1);
        ans[i]=temp;
        temp=0;
    }
    double f=0;
    
    for(int i=0;i<digits;i++){
        double temp_f=(double)ans[i];
        for(int j=0;j<=i;j++){
            temp_f/=10;
        }
        f+=temp_f;
    }
    return f;
}

void fib_iter_big(int n,short fib[]){//迭代求斐波那契
    if (n<=0) n=1;
    int i;
    short zero[LEN]={0};
    short fiba[LEN]={0};
    short fib1[LEN]={0};
    short fib2[LEN]={0};
    fib1[0]=1;
    fib2[0]=1;
    switch (n){
        case 1:
        case 2:
            big_copy(fib1,fib);
        default:
            for(i=3;i<=n;i++){
                big_add(fib1,fib2,fiba);
                big_copy(fib1,fib2);
                big_copy(fiba,fib1);
            }
            big_copy(fiba,fib);
    }
}

int main(){
    short fib[LEN]={0};
    short fib2[LEN]={0};
    short ans[LEN]={0};
    fib_iter_big(100,fib);
    fib_iter_big(101,fib2);
    double g=big_div(fib,fib2,ans,9);
    printf("%.8f",g);
    return 0;
}